package br.com.lacibMusic.bean;

import br.com.lacibMusic.entidades.Gravadora;
import br.com.lacibMusic.entidades.Selo;
import br.com.lacibMusic.rn.SeloRN;
import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;

@ManagedBean
@ViewScoped
public class SeloBean{

    private SeloRN seloRN = new SeloRN();
    private Selo selo = new Selo();
    private Gravadora gravadora = new Gravadora();
    private List<Selo> selos;
    private boolean renderLista;

    public String getTitulo() {
        iniciarBean();

        return "Cadastro - Gênero Musical";
    }

    public void iniciarBean() {
        selos = seloRN.obterTodosPorGravadora(gravadora);
        renderLista = true;
    }

    public SeloBean() {
    }

    public Selo getSelo() {
        return selo;
    }

    public void setSelo(Selo selo) {
        this.selo = selo;
    }

    public Gravadora getGravadora() {
        return gravadora;
    }

    public void setGravadora(Gravadora gravadora) {
        this.gravadora = gravadora;
    }

    public SeloRN getSeloRN() {
        return seloRN;
    }

    public void setSeloRN(SeloRN seloRN) {
        this.seloRN = seloRN;
    }

    public List<Selo> getSelos() {
        if (selos == null) {
            selos = seloRN.obterTodosPorGravadora(gravadora);
        }
        return selos;
    }

    public void setSelos(List<Selo> selos) {
        this.selos = selos;
    }

    public String irExcluir() {
        return "/selo/excluir.xhtml";
    }

    public String cancelar() {
        return "/selo/listarSelo.xhtml";
    }

    public void salvar() {
        if (!seloRN.obterPorNome(selo.getNomeSelo()).isEmpty()) {
            BeanUtil.criarMensagemDeErro("Erro ao salvar", "Verifique se já não existe selo cadastrado com este nome.");
        } else {
            if (seloRN.salvar(selo)) {
                BeanUtil.criarMensagemDeInformacao("Operação Realizada com Sucesso", "Selo Salvo na Lista");
            } else {
                BeanUtil.criarMensagemDeErro("Erro ao salvar", "O Selo não pode ser salvo.");
            }
        }
    }

    public void voltar() {
        selo = null;
        renderLista = true;
    }

     public void novo() {
        if (selo == null) {
            selo = seloRN.novo();
            selo.setGravadoraid(gravadora);
        }
        renderLista = false;
    }
     
    public String excluir() {
        if (seloRN.remover(selo)) {
            BeanUtil.criarMensagemDeInformacao("Selo Removido com sucesso.", "Selo: " + selo.getNomeSelo());
        } else {
            BeanUtil.criarMensagemDeErro("Erro ao remover Selo.", "O Selo não pode ser removido.");
        }
        selo = new Selo();
        return "/selo/listarSelo.xhtml";
    }

    public boolean isRenderLista() {
        return renderLista;
    }

    public void setRenderLista(boolean renderLista) {
        this.renderLista = renderLista;
    }
}
